#include "Key.h"

Keys_t ScanKeyPress(uint32_t timeout)
{
	//Keys_t Key = KeyNone;
	uint32_t TickStart = HAL_GetTick();
	const uint32_t btnDly = 20;
	while(1)
	{
#ifdef Key0_Pin
		if(HAL_GPIO_ReadPin(Key0_GPIO_Port,Key0_Pin) == GPIO_PIN_RESET)
		{
			HAL_Delay(btnDly);
			if(HAL_GPIO_ReadPin(Key0_GPIO_Port,Key0_Pin) == GPIO_PIN_RESET)
			return Key0;
		}
#endif
#ifdef Key1_Pin
		if(HAL_GPIO_ReadPin(Key1_GPIO_Port,Key1_Pin) == GPIO_PIN_RESET)
		{
			HAL_Delay(btnDly);
			if(HAL_GPIO_ReadPin(Key1_GPIO_Port,Key1_Pin) == GPIO_PIN_RESET)
			return Key1;
		}
#endif
#ifdef Key2_Pin
		if(HAL_GPIO_ReadPin(Key2_GPIO_Port,Key2_Pin) == GPIO_PIN_RESET)
		{
			HAL_Delay(btnDly);
			if(HAL_GPIO_ReadPin(Key2_GPIO_Port,Key2_Pin) == GPIO_PIN_RESET)
			return Key2;
		}
#endif
#ifdef Key_UP_Pin
		if(HAL_GPIO_ReadPin(Key_UP_GPIO_Port,Key_UP_Pin) == GPIO_PIN_SET)
		{
			HAL_Delay(btnDly);
			if(HAL_GPIO_ReadPin(Key_UP_GPIO_Port,Key_UP_Pin) == GPIO_PIN_SET)
			return Key_UP;
		}
#endif
		if(timeout != Key_Always_Perss)
		{
		if((HAL_GetTick()-TickStart) >timeout) break;
		}
	}
	return KeyNone;
}
